package proyectoX.src.powerups;

import java.awt.Rectangle;

import javax.swing.JLabel;

import proyectoX.src.aplicacion.Juego;

/**
 * Clase abstracta que representa a todos los powerups del juego.
 *
 */
public abstract class Power_up {
	
	protected Juego juego;
	protected JLabel icono;
	protected int velocidad;
	
	/**
	 * Crea un powerup asociado a un juego y con una velocidad de caída definida.
	 * @param j Objeto Juego.
	 * @param v Velocidad de caída vertical.
	 */
	protected Power_up(Juego j, int v) {
		this.juego = j;
		velocidad = v;
	}
	
	/**
	 * Método a redefinir, es el efecto del powerup que se activa.
	 */
	public abstract void activarEfecto();
	
	
	/**
	 * EL powerup va cayendo en función de su velocidad.
	 */
	public void actualizarPosicion() {
		icono.setLocation(icono.getX(), icono.getY()+velocidad);
	}
	
	/**
	 * Devuelve el ícono del powerup (para poder ser eliminado gráficamente).
	 * @return Ícono del powerup. 
	 */
	public JLabel getIcono() {
		return icono;
	}
	
	/**
	 * Devuelve el area de colisión del powerup.
	 * @return Área de colsión.
	 */
	public Rectangle getBounds() {
		// todas son cuadrados de 32x32
		return new Rectangle(icono.getX(), icono.getY(), icono.getWidth(), icono.getHeight());
	}

	/**
	 * Los powerups son recogidos por la nave principal por lo que le pide a nivel que
	 * calcule si ha colisionado conla nave jugadora.
	 * @return Verdadero si colisionó, falso en caso contrario.
	 */
	public boolean calcularColisiones() {
		return juego.getNivelActual().calcularColisionConPowerup(this);
	}
}
